package vip.zhenzicheng.test.juc.atomic;

import java.util.concurrent.atomic.LongAccumulator;
import java.util.concurrent.atomic.LongAdder;

/**
 * @author zhenzicheng
 * @date 2022-09-07 09:57
 */
public class LongAdderApiCase {

  public static void main(String[] args) {
    // 只支持加减
    LongAdder longAdder = new LongAdder();
    longAdder.increment();
    longAdder.add(10);
    longAdder.decrement();
    System.out.println(longAdder.sum()); // 10

    // 支持自定义函数操作，还是 “累” 操作，例如：累加、累除等
    LongAccumulator longAccumulator = new LongAccumulator((x, y) -> x + y, 0); // 可以 Long::sum 替换第一个参数
    longAccumulator.accumulate(1); // 1
    longAccumulator.accumulate(3); // 4
    longAccumulator.accumulate(10); // 14
    System.out.println(longAccumulator.get());
  }
}
